{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Loan Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 直接调用xgboost内嵌的cv寻找最佳的参数n_estimators"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Gender</th>\n",
       "      <th>City</th>\n",
       "      <th>Monthly_Income</th>\n",
       "      <th>DOB</th>\n",
       "      <th>Lead_Creation_Date</th>\n",
       "      <th>Loan_Amount_Applied</th>\n",
       "      <th>Loan_Tenure_Applied</th>\n",
       "      <th>Existing_EMI</th>\n",
       "      <th>Employer_Name</th>\n",
       "      <th>...</th>\n",
       "      <th>EMI_Loan_Submitted</th>\n",
       "      <th>Filled_Form</th>\n",
       "      <th>Device_Type</th>\n",
       "      <th>Var2</th>\n",
       "      <th>Source</th>\n",
       "      <th>Var4</th>\n",
       "      <th>LoggedIn</th>\n",
       "      <th>Disbursed</th>\n",
       "      <th>Unnamed: 26</th>\n",
       "      <th>Age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ID000002C20</td>\n",
       "      <td>0</td>\n",
       "      <td>172</td>\n",
       "      <td>20000</td>\n",
       "      <td>1978-05-23</td>\n",
       "      <td>44</td>\n",
       "      <td>300000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>8691</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ID000004E40</td>\n",
       "      <td>1</td>\n",
       "      <td>446</td>\n",
       "      <td>35000</td>\n",
       "      <td>1985-10-07</td>\n",
       "      <td>11</td>\n",
       "      <td>200000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>38689</td>\n",
       "      <td>...</td>\n",
       "      <td>6762.9</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ID000007H20</td>\n",
       "      <td>1</td>\n",
       "      <td>497</td>\n",
       "      <td>22500</td>\n",
       "      <td>1981-10-10</td>\n",
       "      <td>56</td>\n",
       "      <td>600000.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1833</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ID000008I30</td>\n",
       "      <td>1</td>\n",
       "      <td>568</td>\n",
       "      <td>35000</td>\n",
       "      <td>1987-11-30</td>\n",
       "      <td>26</td>\n",
       "      <td>1000000.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>5698</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>20</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ID000009J40</td>\n",
       "      <td>1</td>\n",
       "      <td>87</td>\n",
       "      <td>100000</td>\n",
       "      <td>1984-02-17</td>\n",
       "      <td>59</td>\n",
       "      <td>500000.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>25000.0</td>\n",
       "      <td>13513</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>12</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>34</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 28 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ID  Gender  City  Monthly_Income         DOB  Lead_Creation_Date  \\\n",
       "0  ID000002C20       0   172           20000  1978-05-23                  44   \n",
       "1  ID000004E40       1   446           35000  1985-10-07                  11   \n",
       "2  ID000007H20       1   497           22500  1981-10-10                  56   \n",
       "3  ID000008I30       1   568           35000  1987-11-30                  26   \n",
       "4  ID000009J40       1    87          100000  1984-02-17                  59   \n",
       "\n",
       "   Loan_Amount_Applied  Loan_Tenure_Applied  Existing_EMI  Employer_Name ...   \\\n",
       "0             300000.0                  5.0           0.0           8691 ...    \n",
       "1             200000.0                  2.0           0.0          38689 ...    \n",
       "2             600000.0                  4.0           0.0           1833 ...    \n",
       "3            1000000.0                  5.0           0.0           5698 ...    \n",
       "4             500000.0                  2.0       25000.0          13513 ...    \n",
       "\n",
       "   EMI_Loan_Submitted  Filled_Form  Device_Type  Var2  Source  Var4  LoggedIn  \\\n",
       "0                 NaN            7            2     6       4     1         0   \n",
       "1              6762.9            7            2     6       4     3         0   \n",
       "2                 NaN            7            2     1      20     1         0   \n",
       "3                 NaN            7            2     1      20     3         0   \n",
       "4                 NaN            7            2     1      12     3         1   \n",
       "\n",
       "   Disbursed  Unnamed: 26  Age  \n",
       "0          0          NaN   40  \n",
       "1          0          NaN   33  \n",
       "2          0          NaN   37  \n",
       "3          0          NaN   31  \n",
       "4          0          NaN   34  \n",
       "\n",
       "[5 rows x 28 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "dpath = './'\n",
    "train = pd.read_csv(dpath +\"FE_train.csv\")\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target 分布，看看各类样本分布是否均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.Disbursed);\n",
    "pyplot.xlabel('Disbursed');\n",
    "pyplot.ylabel('Number of customers');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每类样本分布不是很均匀"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于电脑老旧，故取1%的数据用于完成训练测试任务，集中精力放在参数调优的学习上。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "y = train['Disbursed']\n",
    "X = train.drop(['Disbursed'], axis=1)\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.99,random_state=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# drop ids and get labels\n",
    "y_train = y_train\n",
    "X_train = X_train.drop(['ID','DOB','LoggedIn','Unnamed: 26'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "默认参数，此时学习率为0.1，比较大，观察弱分类数目的大致范围（采用默认参数配置，看看模型是过拟合还是欠拟合）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#直接调用xgboost内嵌的交叉验证（cv），可对连续的n_estimators参数进行快速交叉验证\n",
    "#而GridSearchCV只能对有限个参数进行交叉验证\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    #xgb_param['num_class'] = 9\n",
    "    \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='logloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    print (\"Best n_estimators:\", n_estimators)\n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='logloss')\n",
    "    # make prediction\n",
    "\n",
    "    \n",
    "    \n",
    "    #Predict training set:\n",
    "    #train_predprob = alg.predict_proba(X_train)\n",
    "    #logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "   #Print model report:\n",
    "   # print (\"logloss of train :\" )\n",
    "   # print logloss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best n_estimators: 58\n"
     ]
    }
   ],
   "source": [
    "#params = {\"objective\": \"binary:logistic\", \"eval_metric\":\"logloss\", \"num_class\": 2}\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'binary:logistic',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-logloss-mean']\n",
    "test_stds = cvresult['test-logloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-logloss-mean']\n",
    "train_stds = cvresult['train-logloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators4_1.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[20:]\n",
    "# plot\n",
    "test_means = cvresult['test-logloss-mean']\n",
    "test_stds = cvresult['test-logloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-logloss-mean']\n",
    "train_stds = cvresult['train-logloss-std'] \n",
    "\n",
    "x_axis = range(20,cvresult.shape[0]+20)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
